#ifndef WXSARRAYSTRINGCHECKPROPERTY_H
#define WXSARRAYSTRINGCHECKPROPERTY_H

#include "../../properties/wxsproperties.h"

WX_DEFINE_ARRAY_INT( bool, wxArrayBool );



class wxsArrayStringCheckProperty: public wxsCustomEditorProperty {
  public:


    wxsArrayStringCheckProperty( const wxString& PGName, const wxString& DataName, const wxString& DataSubName, long Offset, long CheckOffset, int Priority = 100 );


    virtual const wxString GetTypeName() { return _T( "wxArrayStringCheck" ); }


    virtual bool ShowEditor( wxsPropertyContainer* Object );

  protected:

    virtual bool XmlRead( wxsPropertyContainer* Object, TiXmlElement* Element );
    virtual bool XmlWrite( wxsPropertyContainer* Object, TiXmlElement* Element );
    virtual bool PropStreamRead( wxsPropertyContainer* Object, wxsPropertyStream* Stream );
    virtual bool PropStreamWrite( wxsPropertyContainer* Object, wxsPropertyStream* Stream );
    virtual wxString GetStr( wxsPropertyContainer* Object );

  private:
    long Offset;
    long CheckOffset;
    wxString DataSubName;
};




#define WXS_ARRAYSTRINGCHECK(ClassName,StringVarName,BoolVarName,PGName,DataName,DataSubName) \
  { static wxsArrayStringCheckProperty _Property(PGName,DataName,DataSubName,wxsOFFSET(ClassName,StringVarName),wxsOFFSET(ClassName,BoolVarName)); \
    Property(_Property); }


#define WXS_ARRAYSTRINGCHECK_P(ClassName,StringVarName,BoolVarName,PGName,DataName,DataSubName,Priority) \
  { static wxsArrayStringCheckProperty _Property(PGName,DataName,DataSubName,wxsOFFSET(ClassName,StringVarName),wxsOFFSET(ClassName,BoolVarName),Priority); \
    Property(_Property); }




#endif
